package br.com.tiespec.ejb.Ejb;

import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;

import br.com.tiespec.ejb.Dao.ClientePortalDAO;
import br.com.tiespec.ejb.Dao.ClienteProjetoDAO;
import br.com.tiespec.ejb.Dao.ConfigDescricaoDAO;
import br.com.tiespec.ejb.Dao.ProjetoDAO;
import br.com.tiespec.ejb.Dao.UsuarioDAO;
import br.com.tiespec.ejb.EjbInterface.ConfigDescricaoInterface;
import br.com.tiespec.model.Modelo.ClientePortal;
import br.com.tiespec.model.Modelo.ConfigDescricaoEstendida;
import br.com.tiespec.model.Util.RNException;

@Stateless(mappedName = "ConfigDescricaoImpl")
@Local(value=ConfigDescricaoInterface.class)
public class ConfigDescricaoImpl implements ConfigDescricaoInterface  {

	private static final long serialVersionUID = 1L;
	
	@EJB ClientePortalDAO cpDao;
	@EJB ConfigDescricaoDAO cdDao;
	@EJB ClienteProjetoDAO cProDao;
	@EJB UsuarioDAO uDao;
	@EJB ProjetoDAO pDao;
	
	@Override
	public ClientePortal selecionarClientePortal(Long idClientePortal) throws RNException {
		return cpDao.selecionar(idClientePortal);
	}

	@Override
	public ConfigDescricaoEstendida selecionarConfiguracao(Long idClientePortal)
			throws RNException {
		return cdDao.selecionar(idClientePortal);
	}

	@Override
	public void salvarConfiguracao(ConfigDescricaoEstendida configuracaoInstance)
			throws RNException {
		try {
			if (configuracaoInstance.getId() != null)
				cdDao.update(configuracaoInstance);
			else
				cdDao.save(configuracaoInstance);
		} catch (Exception e){
			e.printStackTrace();
			throw new RNException(e);
		}
		
	}

	@Override
	public Integer countUsuarios(Long idClientePortal){
		return uDao.countUsuarioDeUmCliente(idClientePortal);
	}

	@Override
	public Integer countClientes(Long idClientePortal){
		return cProDao.countClientesDeUmCliente(idClientePortal);
	}

	@Override
	public Integer countProjetos(Long idClientePortal){
		return pDao.countProjetosDeUmCliente(idClientePortal);
	}

}
